/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ejb;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.LinkedList;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;


/**
 *
 * @author Rob
 */
@Stateless
public class ArticoloNuovoFacade extends AbstractFacade<ArticoloNuovo> implements ArticoloNuovoFacadeLocal {
    @PersistenceContext(unitName = "EnterpriseApplication12-13-ejbPU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    
    public ArticoloNuovoFacade() {
        super(ArticoloNuovo.class);
    }
    
  /**
     * Cerca l'articolo nuovo nel Database
     *
     * @param art articolo nuovo da cercare
     * @return true se l'articolo nuovo e' presenti nel Database, false altrimenti
     */
    @Override
     public boolean articoloEsistente(ArticoloNuovo art){
        DateFormat data = new SimpleDateFormat("yyyy-MM-dd");
        String dataInsArt = data.format(art.getData());
        return !(em.createQuery("select object(a) from ArticoloNuovo as a where UPPER(a.nome) = '" + art.getNome().toString().toUpperCase() + "' and UPPER(a.data) ='" + dataInsArt +"'" ,ArticoloNuovo.class).getResultList().isEmpty());
    }
    
  /**
     * Cerca l'articolo nuovo con uno specifico id nel Database
     *
     * @param id identificativo dell'articolo nuovo da cercare
     * @return ArticoloNuovo l'articolo nuovo con identificativo id, null altrimenti
     */
    @Override
     public ArticoloNuovo getArticoloNuovo(Long id){
         String idString = id.toString();
         return em.createQuery("select object(a) from ArticoloNuovo a where a.id ='" + idString +"'",ArticoloNuovo.class).getSingleResult();
     }

  /**
     * Cerca tutti gli articoli nuovi del Database
     *
     * @return List<ArticoloNuovo> lista degli articoli nuovi presenti nel Database,  altrimenti restituisce una lista vuota 
     */
    @Override
     public List<ArticoloNuovo> getArticoliNuovi(){
        List<ArticoloNuovo> artNuovi= em.createQuery("select object(a) from ArticoloNuovo as a",ArticoloNuovo.class).getResultList();
         if(!artNuovi.isEmpty()){
             return artNuovi;
         }
         return new LinkedList<ArticoloNuovo>();
     }

     
  /**
     * Ricerca gli articoli nuovi il cui nome matcha con il parametro articolo nel Database
     *
     * @param articolo sottostringa di ricerca
     * @return List<ArticoloNuovo> lista degli articoli nuovi che soddisfano la ricerca, altrimenti restituisce una lista vuota 
     */
    @Override
     public List<ArticoloNuovo> findArticoliNuovi(String articolo){
         
        return em.createQuery("select object(a) from ArticoloNuovo as a where UPPER(a.nome) LIKE '%" + articolo.toUpperCase() + "%'",ArticoloNuovo.class).getResultList();
       
     }
   
}

